# conditional_prompts.py
import os
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI


def conditional_prompts():
    """条件提示词演示"""

    print("🎯 条件提示词演示")
    print("=" * 30)

    llm = ChatOpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        model="qwen-turbo"
    )

    def create_adaptive_prompt(candidate_data):
        """根据候选人情况创建自适应提示词"""

        # 基础提示词
        base_prompt = "你是一名资深HR，请分析以下候选人："

        # 根据经验年限调整分析重点
        if candidate_data["experience_years"] <= 1:
            focus = "请重点关注学习能力、基础知识掌握程度和发展潜力"
            advice_type = "新人培养建议"
        elif candidate_data["experience_years"] <= 3:
            focus = "请重点关注技能深度、项目经验和团队协作能力"
            advice_type = "技能提升建议"
        elif candidate_data["experience_years"] <= 5:
            focus = "请重点关注技术广度、架构能力和领导潜质"
            advice_type = "职业发展建议"
        else:
            focus = "请重点关注技术深度、管理经验和行业影响力"
            advice_type = "高级人才评估"

        # 根据职位类型调整评估标准
        if candidate_data["target_position"] == "技术专家":
            criteria = """评估标准：
1. 技术深度（权重40%）
2. 问题解决能力（权重30%）
3. 技术影响力（权重20%）
4. 团队合作（权重10%）"""
        elif candidate_data["target_position"] == "技术管理":
            criteria = """评估标准：
1. 管理能力（权重35%）
2. 技术背景（权重25%）
3. 沟通协调（权重25%）
4. 战略思维（权重15%）"""
        else:
            criteria = """评估标准：
1. 技能匹配度（权重30%）
2. 工作经验（权重25%）
3. 学习能力（权重25%）
4. 文化契合（权重20%）"""

        # 组装完整提示词
        full_prompt = f"""{base_prompt}

候选人信息：
姓名：{candidate_data["name"]}
经验：{candidate_data["experience_years"]}年
技能：{candidate_data["skills"]}
目标职位：{candidate_data["target_position"]}

{focus}

{criteria}

请提供{advice_type}。
"""

        return full_prompt

    # 测试不同类型的候选人
    candidates = [
        {
            "name": "应届生小王",
            "experience_years": 0,
            "skills": "Java基础、数据结构",
            "target_position": "初级开发"
        },
        {
            "name": "中级工程师张三",
            "experience_years": 3,
            "skills": "Java、Spring Boot、微服务",
            "target_position": "高级开发"
        },
        {
            "name": "技术专家李四",
            "experience_years": 8,
            "skills": "架构设计、团队管理、技术规划",
            "target_position": "技术管理"
        }
    ]

    for candidate in candidates:
        print(f"\n📋 候选人：{candidate['name']}")
        adaptive_prompt = create_adaptive_prompt(candidate)
        print("生成的自适应提示词：")
        print(adaptive_prompt)
        print("-" * 50)

        # 获取AI分析结果
        result = llm.invoke(adaptive_prompt)
        print("AI分析结果：")
        print(result.content)
        print("=" * 60)


# 运行演示
conditional_prompts()
